使用MATLAB时可以并行使用“while”循环吗? [解决]

您所在的位置:网站首页 matlab while循环例子 使用MATLAB时可以并行使用“while”循环吗? [解决]

使用MATLAB时可以并行使用“while”循环吗? [解决]

#使用MATLAB时可以并行使用“while”循环吗? [解决]| 来源: 网络整理| 查看: 265

我知道,它似乎是直接的答案是NO。然而,我想知道是否没有办法让它工作。使用MATLAB时可以并行使用“while”循环吗? [解决]

基本上,我想从分布中随机抽取,只保留那些尊重某个条件并填充预定义存储矩阵并在矩阵满后停止的人。由于这些是绘制的,我想我可以利用Matlab的并行功能,但由于存储矩阵的完成取决于绘制的顺序,我觉得这里存在一个问题。

另外,有没有一种方法来使用时间检查手头的问题。例如,我会使用一个极限极大的parfor,但包含一种以频繁间隔检查存储矩阵大小的方法。

在伪代码,它会给:

创建存储矩阵的大小:A=zeros(100,1); Naccepted=0;Ntried=0; 开始for循环:parfor i=1:100000000000 做循环:x(i)=randn(1,1) 检查它是否尊重的条件:if x(i)>0, Naccepted=Naccepted+1; Ntried=Ntried+1; A(j,1)=x(i), else Ntried=Ntried+1 每5分钟检查一次计时器(我不知道如何在Matlab中实现它)如果大小A已达到100或没有。如果是这样,那就停下来接受前100场的平局。如果没有,继续。

我意识到我的问题非常混乱,但我无法正确地看到哪个部分可以并行工作。

好了,想通了:

matlabpool open 8 tic clear; j=1; Naccepted=0; A=[]; workers=8; while size(A,1)0); A=[A;V]; Naccepted(j,1)=size(V,1); j=j+1; end Ntried=j*workers*10; rejection=1-sum(Naccepted)/Ntried; A=A(1:100,1); toc matlabpool close

谢谢您的回答!

来源

2013-08-21 user89073

+0

您不能因为您在一次迭代和下一次迭代之间创建依赖关系,而对于并行执行,您需要一个“无序”循环。 – Oleg

+0

感谢您的意见。奥列格,这正是我的想法。马克,积极的条件只是举一个简单的例子,手头上的一个稍微复杂一点。我能想到的唯一解决方案是将问题分解到Matlab会话中的工作人员数量,并要求每位工作人员接受100/w的抽奖。任何关于计时器的想法?谢谢。 – user89073



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3